<template>
	<view class="balance-transfer">
		<view class="contain bg-white">
			<input style="height: 100rpx" v-model="userSn" type="text" placeholder="请输入对方会员ID/手机号码进行转账" />
		</view>
		<view class="contain transfer-money bg-white u-m-t-20">
			<view class="muted xs">转账积分</view>
			<view class="input u-flex row-center">
				<input v-model="money" type="digit" placeholder="0.00" />
				<view class="column" style="flex: none">
					<view class="xs primary" style="text-align: right" @tap="money = wallet.user_integral">全部</view>
					<view class="xs mt10" style="color: #bbbbbb">积分{{ wallet.user_integral }}</view>
				</view>
			</view>
			<view class="btn lg white u-text-center row-center br60" @tap="transferBtn">转账</view>
			<navigator url="/bundle/pages/transfer_record/transfer_record" hover-class="none"
				class="u-m-t-20 nr lighter row-center u-text-center">
				转账记录</navigator>
		</view>
		<view class="user contain bg-white u-m-t-20" v-if="transferList.length">
			<view class="lg bold">最近转账</view>
			<view class="list">
				<view class="item u-flex" v-for="(item, index) in transferList" :key="index" @tap="userSn = item.sn">
					<image class="avatar u-m-r-30" :src="item.avatar"></image>
					<view>
						<view class="md">{{ item.nickname }}</view>
						<view class="xs muted">会员ID:{{ item.sn }}</view>
					</view>
				</view>
			</view>
		</view>
		<u-modal :value="showTransferInfo" show-cancel-button title="确认转账给" :confirm-color="primaryColor" async-close
			confirm-text="确认转账" @confirm="showInputPwd" @cancel="showTransferInfo = false">
			<view class="slot-content row-center" style="padding: 40rpx 80rpx">
				<view class="transfer-user u-flex">
					<image class="avatar u-m-r-30" :src="transferInfo.avatar"></image>
					<view>
						<view class="md">{{ transferInfo.nickname }}</view>
						<view class="xs muted mt10">会员ID:{{ transferInfo.sn }}</view>
					</view>
				</view>
			</view>
		</u-modal>
		<set-pay-pwd ref="setPayPwd" @confirm="transferFun"></set-pay-pwd>
	</view>
</template>

<script>
	import {
		hasPayPassword,
		transfer,
		getTransferRecent,
		setPassword,
		transferToInfo,
		getWallet
	} from '@/api/user'
	import {
		trottle
	} from '@/utils/tools'
	export default {
		data() {
			return {
				showTransferInfo: false,
				pwd: '',
				comfirmPwd: '',
				userSn: '',
				money: '',
				transferInfo: {},
				transferList: [],
				wallet: {}
			}
		},
		onLoad() {
			this.getTransferRecentFun()
			this.getWalletFun()
			this.transferFun = trottle(this.transferFun, 1000, this)
		},
		onShow() {
			setTimeout(() => {
				this.$refs.setPayPwd && this.$refs.setPayPwd.hasPayWord()
			})
		},
		methods: {
			getWalletFun() {
				getWallet().then((res) => {
					if (res.code == 1) {
						this.wallet = res.data
					}
				})
			},
			showInputPwd() {
				this.showTransferInfo = false
				this.$refs.setPayPwd.showInputPwd()
			},
			getTransferRecentFun() {
				getTransferRecent().then((res) => {
					if (res.code == 1) {
						this.transferList = res.data
					}
				})
			},
			async transferBtn() {
				let {
					userSn,
					money
				} = this
				if (!userSn)
					return this.$toast({
						title: '请输入对方会员ID/手机号码'
					})
				if (!money)
					return this.$toast({
						title: '请输入转账金额'
					})

				let data = {
					transferTo: userSn
				}
				// 校验会员信息
				const {
					code: vipCode,
					data: transferInfo
				} = await transferToInfo(data)
				if (vipCode != 1) return
				this.transferInfo = transferInfo
				this.showTransferInfo = true
			},
			transferFun(payPwd) {
				const {
					userSn,
					money
				} = this
				let data = {
					transferTo: userSn,
					money: money,
					pay_password: payPwd
				}
				transfer(data).then((res) => {
					if (res.code == 1) {
						this.$toast({
								title: res.msg
							}
							// {
							// 	tab: 2,
							// 	url: '/bundle/pages/transfer_record/transfer_record'
							// }
						)
						this.money = ''
						this.showInputPwd()
						this.getWalletFun()
						this.getTransferRecentFun()
					}
				})
			}
		}
	}
</script>

<style lang="scss">
	.balance-transfer {
		padding: 20rpx 30rpx;

		.contain {
			border-radius: 20rpx;
			padding: 0 24rpx;
		}

		.transfer-money {
			padding: 30rpx 45rpx;

			.input {
				border-bottom: $-solid-border;
				margin-top: 30rpx;

				input {
					width: 100%;
					height: 94rpx;
					text-align: left;
					font-size: 66rpx;
					margin-left: 30rpx;
				}
			}

			.btn {
				background: linear-gradient(79deg, #b00b0f 0%, #ff2c3c 100%);
				line-height: 84rpx;
				margin-top: 80rpx;
			}
		}

		.user {
			padding: 22rpx 25rpx;

			.list .item {
				padding: 26rpx 0;

				&:not(:last-of-type) {
					border-bottom: $-solid-border;
				}
			}
		}

		.avatar {
			width: 68rpx;
			height: 68rpx;
			border-radius: 50%;
			flex: none;
		}
	}

	/* 弹窗 */
	.balance-transfer .set-word input {
		border: var(--border);
		padding: 16rpx 20rpx;
		font-size: 28rpx;
		border-radius: 6rpx;
		margin-bottom: 20rpx;
	}

	.balance-transfer .phone {
		padding: 20rpx 0;
		font-size: 42rpx;
	}
</style>